<?php
class LightConnIterator
{
	/**
	 * Resultado da query
	 *
	 * @var result
	 */
	protected $result;
	
	/**
	 * Número do registro atual
	 *
	 * @var int
	 */
	protected $current = 0;
	/**
	 * Total de registros
	 *
	 * @var int
	 */
	protected $total = 0;
	/**
	 * Registro atual
	 *
	 * @var array
	 */
	protected $row;
	/**
	 * Ponteiro do array com os campos da consulta atual
	 * 
	 * Ex: $arrFields['campo1'];
	 *
	 * @var array
	 */
	protected $arrFields;
	/**
	 * Driver de conexão
	 *
	 * @var LightConnDriver
	 */
	protected $driver;
	
	/**
	 * Recebe um resultado de uma query
	 *
	 * @param stmt $stmt
	 * @param result $result
	 * @return LightConnIterator
	 */
	public function LightConnIterator($result, $driver)
	{
		
	}
	
	/**
	 * total de registros
	 *
	 * @return int
	 */
	public function Count()
	{
		return $this->total;
	}
	
	/**
	 * Há próximo registro?
	 *
	 * @return bool
	 */
	public function hasNext()
	{
		return $this->current < $this->total;
	}
	
	/**
	 * Obtem o próximo registro
	 * 
	 * Retorna um array associativo
	 *
	 * @return array
	 */
	public function moveNext()
	{
		$this->current++;
		
		$row = $this->Fetch();
		
		if (!$this->hasNext())
		{
			$this->FreeResult();
		}
		
		return $row;
	}
	
	/**
	 * Retorna todos os campos da consulta num array
	 * 
	 * Ex: $arr[0]; -> campo1
	 *
	 * @return array
	 */
	public function Fields()
	{
		return array_keys($this->arrFields);
	}
	
	/**
	 * Liberar consulta da memória
	 *
	 */
	protected function FreeResult()
	{}
	
	/**
	 * Obter próximo registro
	 *
	 * @return array
	 */
	protected function Fetch()
	{}
	
	/**
	 * Compilar resultado
	 *
	 */
	protected function BindResult()
	{}
	
	/**
	 * Retorna Consulta em um Objeto Array
	 *
	 * @param result $result
	 * @return array
	 */
	public function ResultArray()
	{}
	
	public function __destruct()
	{
		$this->FreeResult();
	}
}

?>